package com.smile.model.domain;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.ToString;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.time.LocalDateTime;

@Data
@ToString
@TableName(value = "feisuan_airline")
public class FeisuanAirline {
    /**
     * 主键id
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 航线名称
     */
    @TableField(value = "airline_name")
    private String airlineName;

    /**
     * 航线类型 0.点状航线，1.线状航线
     */
    @TableField(value = "airline_type")
    private Integer airlineType;

    /**
     * 0支持广角照片 1.不支持广角照片
     */
    @TableField(value = "wide_type")
    private Integer wideType;

    /**
     * 0支持变焦照片 1不支持变焦照片
     */
    @TableField(value = "zoom_type")
    private Integer zoomType;

    /**
     * 0支持红外摄像头 1 不支持红外摄像头
     */
    @TableField(value = "ir_type")
    private Integer irType;


    /**
     * 0支持红可见光 1 不支持红可见光
     */
    @TableField(value = "visable_type")
    private Integer visableType;

    /**
     * 0相对起飞点高度 1相对地面高度 2绝对高度
     */
    @TableField(value = "airline_height_type")
    private Integer airlineHeightType;

    /**
     * 飞行高度
     */
    @TableField(value = "global_height")
    private BigDecimal globalHeight;

    /**
     * 飞行速度
     */
    @TableField(value = "auto_flight_speed")
    private BigDecimal autoFlightSpeed;

    /**
     * 起飞速度
     */
    @TableField(value = "global_transitional_speed")
    private BigDecimal globalTransitionalSpeed;

    /**
     * 0沿航线方向 1手动控制 2锁定当前偏航角
     */
    @TableField(value = "attitude_head")
    private Integer attitudeHead;

    /**
     * 航点类型 0. 协调转弯，不过点，提前转弯
     * 1. 直线飞行，飞行器点到停
     * 2. 平滑过点，提前转弯
     * 3. 曲线飞行，飞行器到点停
     * 4. 曲线飞行，飞行器过点不停
     */
    @TableField(value = "way_point_type")
    private Integer wayPointType;

    /**
     * 0自动返航
     * 1返回航线到起始点悬停
     * 2退出航线模式
     * 3原地降落
     */
    @TableField(value = "out_of_control_action")
    private Integer outOfControlAction;

    /**
     * 0自动返航
     * 1返回航线到起始点悬停
     * 2退出航线模式
     * 3原地降落
     */
    @TableField(value = "finish_action")
    private Integer finishAction;

    /**
     * 安全起飞高度
     */
    @TableField(value = "take_off_security_height")
    private BigDecimal takeOffSecurityHeight;

    /**
     * 全局返航高度
     */
    @TableField(value = "global_RTH_height")
    private BigDecimal globalRTHHeight;

    /**
     * 创建人
     */
    @TableField(value = "user_id")
    private Long userId;

    /**
     * 创建时间
     */
    @TableField(value = "create_time")
    private LocalDateTime createTime;

    /**
     * 航点数
     */
    @TableField(value = "point_num")
    private Integer pointNum;

    /**
     * 预计执行时间
     */
    @TableField(value = "execute_time")
    private String executeTime;

    /**
     * 总里程
     */
    @TableField(value = "total_distance")
    private Integer totalDistance;

    /**
     * 参考起飞点
     */
    @TableField(value = "take_off_ref_point")
    private String takeOffRefPoint;

    /**
     * 航线文件url
     */
    @TableField(value = "airline_url")
    private String airlineUrl;

    @TableField(value = "e_tag")
    private String eTag;

    @TableField("airport_position")
    private String airportPosition;

    @TableField("airport_name")
    private String airportName;

    @TableField("airport_id")
    private Long airportId;

    @TableField("airline_code")
    private String airlineCode;

    /**
     * 品牌id
     */
    @TableField("brand_id")
    private Long brandId;


    /**
     * 品牌id
     */
    @TableField("series_id")
    private Long seriesId;

    /**
     * 品牌id
     */
    @TableField("model_id")
    private Long modelId;


    /**
     * 品牌id
     */
    @TableField("device_model_key")
    private String deviceModelKey;


    /**
     * 面积
     */
    @NotNull(message = "面积不能为空")
    @TableField("areas")
    private Integer areas;


    /**
     * 总照片数
     */
    @NotNull(message = "总照片数不能为空")
    @TableField("total_photos")
    private Integer totalPhotos;




    //    @NotBlank(message = "是否支持红外摄像头参数不能为空")

    @TableField("ir_type_support")
    private Integer irTypeSupport;

    //    @NotBlank(message = "是否支持广角摄像头")
    @TableField("wide_type_support")
    private Integer wideTypeSupport;

    /**
     * 采集方式 0正射采集 1. 倾斜采集
     */
    @TableField("collect_type")
    private Integer collectType;

    /**
     * 广角gsd
     */
    @TableField(exist = false)
    private Integer wideGsd;

    /**
     * 倾斜gsd
     */
    @TableField(exist = false)
    private Integer inclineGsd;

    /**
     * 航线高度模式
     * <p>
     * 0 海拔高度
     * 1 相对起飞点高度
     * 2 相对地形高度
     */
    @TableField("height_mode")
    private Integer heightMode;

    /**
     * 航线高度
     */
    @TableField("height")
    private BigDecimal height;


    /**
     * 云台俯仰角度
     */
    @TableField("gimbal_pitch_angle")
    private Integer gimbalPitchAngle;



    /**
     * 是否开启高程优化 0不开启 1 开启
     */
    @TableField("elevation_optimize_enable")
    private Integer elevationOptimizeEnable;


//    private List<CoordinatePointReq> addCoordinatePoints;
    /**
     * 被摄面海拔高度
     */
    @TableField("global_shoot_height")
    private BigDecimal globalShootHeight;

    /**
     * 测区外扩距离
     */
    @TableField("margin")
    private Integer margin;

    /**
     * 航线方向
     */
    @TableField("direction")
    private Integer direction;

    /**
     * 航向重叠率
     */
    @TableField("overlap_h")
    private Integer overlapH;

    /**
     * 旁向重叠率
     */
    @TableField("overlap_w")
    private Integer overlapW;

    /**
     * 偏航角度
     */
    @TableField("waypoint_heading_angle")
    private BigDecimal waypointHeadingAngle;

    /**
     * 0 沿航线方向
     * 1 手动控制
     */
    @TableField("waypoint_heading_mode")
    private Integer waypointHeadingMode;

    /**
     * 0 等时间拍照
     * 1 等距离拍照
     */
    @TableField("shoot_type")
    private Integer shootType;

    /**
     * 0 非副本航线
     * 1 副本航线
     */
    @TableField("is_copy")
    private Integer isCopy;

}
